package edu.uoc.tds.pac4.beans;

import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

public class Entitat implements Esborrable, Serializable {
	private static final long serialVersionUID = 1L;
	protected String codi;
	protected String nom;
	protected String cp;
	protected String adreca;
	protected String telefon1;
	protected String telefon2;
	protected String fax;
	protected String email;
	protected String web;
	protected Date dataAlta;
	protected Pais pais;
	protected Localitat localitat;
	
	// esborrable
	protected boolean actiu;
	protected Date dataBaixa;
	protected String motiuBaixa;
	
	/**
	 * Constructor null
	 */
	public Entitat()
	{
		super();
	}

	/**
	 * Constructor amb camps
	 * @param codi
	 * @param nom
	 * @param cp
	 * @param adreca
	 * @param telefon1
	 * @param telefon2
	 * @param fax
	 * @param email
	 * @param web
	 * @param dataAlta
	 * @param pais
	 * @param localitat
	 * @param actiu
	 * @param dataBaixa
	 * @param motiuBaixa
	 */
	public Entitat(String codi, String nom, String cp, String adreca,
			String telefon1, String telefon2, String fax, String email,
			String web, Date dataAlta, Pais pais, Localitat localitat,
			boolean actiu, Date dataBaixa, String motiuBaixa) {
		super();
		this.codi = codi;
		this.nom = nom;
		this.cp = cp;
		this.adreca = adreca;
		this.telefon1 = telefon1;
		this.telefon2 = telefon2;
		this.fax = fax;
		this.email = email;
		this.web = web;
		this.dataAlta = dataAlta;
		this.pais = pais;
		this.localitat = localitat;
		this.actiu = actiu;
		this.dataBaixa = dataBaixa;
		this.motiuBaixa = motiuBaixa;
	}

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public String getCp() {
		return cp;
	}

	public void setCp(String cp) {
		this.cp = cp;
	}

	public String getAdreca() {
		return adreca;
	}

	public void setAdreca(String adreca) {
		this.adreca = adreca;
	}

	public String getTelefon1() {
		return telefon1;
	}

	public void setTelefon1(String telefon1) {
		this.telefon1 = telefon1;
	}

	public String getTelefon2() {
		return telefon2;
	}

	public void setTelefon2(String telefon2) {
		this.telefon2 = telefon2;
	}

	public String getFax() {
		return fax;
	}

	public void setFax(String fax) {
		this.fax = fax;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getWeb() {
		return web;
	}

	public void setWeb(String web) {
		this.web = web;
	}

	public Pais getPais() {
		return pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	public Localitat getLocalitat() {
		return localitat;
	}

	public void setLocalitat(Localitat localitat) {
		this.localitat = localitat;
	}

	public String getCodi() {
		return codi;
	}
	
	public void setCodi(String codi) {
		this.codi = codi;
	}

	public Date getDataAlta() {
		return dataAlta;
	}
	
	public void setDataAlta(Date dataAlta) {
		this.dataAlta = dataAlta;
	}

	public boolean isActiu() {
		return actiu;
	}
	
	public void setActiu(boolean actiu) {
		this.actiu = actiu;
	}

	public Date getDataBaixa() {
		return dataBaixa;
	}
	
	public void setDataBaixa(Date dataBaixa) {
		this.dataBaixa = dataBaixa;
	}

	public String getMotiuBaixa() {
		return motiuBaixa;
	}
	
	public void setMotiuBaixa(String motiuBaixa) {
		this.motiuBaixa	= motiuBaixa;	
	}
	
	/**
	 * Construeix una entitat a partir d'un RS
	 * @param rs
	 * @param prefix prefix que cal posar al camp sql
	 * @throws SQLException 
	 */
	public void buildFromRS(ResultSet rs, String prefix) throws SQLException {
		this.setCodi(rs.getString(prefix + "_codi"));
		this.setAdreca(rs.getString(prefix + "_adreca"));
		this.setCp(rs.getString(prefix + "_cp"));
		this.setEmail(rs.getString(prefix + "_email"));
		this.setFax(rs.getString(prefix + "_fax"));
		Localitat localitat = new Localitat();
		localitat.buildFromRS(rs);
		this.setLocalitat(localitat);
		Pais pais = new Pais();
		pais.buildFromRS(rs);
		this.setPais(pais);
		this.setNom(rs.getString(prefix + "_nom"));
		this.setTelefon1(rs.getString(prefix + "_telefon1"));
		this.setTelefon2(rs.getString(prefix + "_telefon2"));
		this.setWeb(rs.getString(prefix + "_web"));
		this.setActiu(rs.getBoolean(prefix + "_actiu"));
		this.setDataAlta(rs.getDate(prefix + "_data_alta"));
		this.setDataBaixa(rs.getDate(prefix + "_data_baixa"));
		this.setMotiuBaixa(rs.getString(prefix + "_motiu_baixa"));
	}

	@Override
	public void baixa(Date data, String motiu) {
		this.actiu=false;
		this.dataBaixa=data;
		this.motiuBaixa = motiu;
	}
}
